/*
 * @Description: 组件必要混入
 * @Author: 无痕
 * @Email: 350801869@qq.com
 * @Date: 2021-03-04 16:14:55
 * @LastEditTime: 2021-03-04 23:32:44
 * @LastEditors: 无痕
 */
import mergeStyle from '../utils/mergeStyle';
import mergeClass from '../utils/mergeClass';
import addUnit from '../utils/addUnit';
import triggerPropsFn from '../utils/triggerPropsFn';
import getParentUntil from '../utils/getParentUntil';

const componentMixin = {
  // #ifdef MP
  options: {
    virtualHost: true, // 在微信小程序中将组件节点渲染为虚拟节点，更加接近Vue组件的表现
    multipleSlots: true, // 在微信小程序中关闭当前组件的多slot支持，默认启用
    // addGlobalClass: true, // 在微信小程序允许页面设置的样式来覆盖组件的内部样式
    styleIsolation: 'shared', // 在微信小程序，表示页面 wxss 样式将影响到自定义组件，自定义组件 wxss 中指定的样式也会影响页面和其他设置了 apply-shared 或 shared 的自定义组件
  },
  // #endif
  props: {
    // 自定义class
    customClass: {
      type: [String, Object, Array],
      default: '',
    },
    // 自定义样式
    customStyle: {
      type: [Object, String],
      default: '',
    },
  },
  computed: {
    custom_class() {
      return this.$mergeClass(this.customClass);
    },
    custom_style() {
      return this.$mergeStyle(this.customStyle);
    },
  },
  methods: {
    $addUnit: addUnit,
    $mergeClass: mergeClass,
    $mergeStyle: mergeStyle,
    $triggerPropsFn: triggerPropsFn,
    $getParentUntil: getParentUntil,
    // #ifdef MP
    // toJSON() {}
    // #endif
  },
};
export default componentMixin;
